import {createRouter, createWebHistory} from 'vue-router'
import {useUserStore} from "@/stores";

// createRouter 创建路由实例
// createWebHistory history模式路由，地址栏不带 #
// createWebHashHistory hash模式路由，地址栏带 #
// v2: this.$router     this.$route
// v3: useRouter        useRoute
const router = createRouter({
	// 里面的参数：地址的 前缀/子路径 ，就是一进入页面跳哪里
	// import.meta.env.BASE_URL：vite中的环境变量，可以在 vite.config.js 中配置
	history: createWebHistory(import.meta.env.BASE_URL),
	routes: [{
		// 登录
		path: '/login',
		component: () => import('../views/login/LoginPage.vue')
	}, {
		// 首页
		path: '/',
		component: () => import('../views/layout/LayoutContainer.vue'),
		// 重定向我的二级路由 <router-view/>
		// redirect: '/article/manage',
		children: [{
			// 文章管理
			path: '/article/manage',
			component: () => import('../views/article/ArticleManage.vue')
		}, {
			// 文章频道
			path: '/article/channel',
			component: () => import('../views/article/ArticleChannel.vue')
		}, {
			// 用户信息
			path: '/user/profile',
			component: () => import('../views/user/UserProfile.vue')
		}, {
			// 用户头像
			path: '/user/avatar',
			component: () => import('../views/user/UserAvatar.vue')
		}, {
			// 用户密码
			path: '/user/password',
			component: () => import('../views/user/UserPassword.vue')
		}]
	}]
})

// 登录访问拦截，全局守卫
// 默认是直接放行了，根据返回值决定
// undefined / true ： 放行
// false            ： 返回 from 的地址
// 具体路径 / 路径对象： 跳转到对应地址
router.beforeEach(to => {
	const userStore = useUserStore()
	if (!userStore.token && to.path !== '/login') return {path: '/login'}
})

export default router
